using Serilog;
using System;

namespace PhraseCorrector.Common {
    public class Logger {

        // ///////////////////////////////////////////////////////////////////////////
        /// <summary>
        /// 静态构造函数，用于初始化日志记录器
        /// </summary>
        private static readonly ILogger _log;

        // ///////////////////////////////////////////////////////////////////////////
        /// <summary>
        /// 锁对象，用于线程同步
        /// </summary>
        private static readonly object _lock = new object();

        // ///////////////////////////////////////////////////////////////////////////
        /// <summary>
        /// 静态构造函数，用于初始化日志记录器
        /// </summary>
        static Logger() {
            try {
                _log = new LoggerConfiguration()
                           .MinimumLevel.Debug() // 可以根据需要调整日志级别
                           .WriteTo.Console(outputTemplate: "[{Timestamp:yyyy-MM-dd HH:mm:ss.fff} {Level:u3}] {Message:lj}{NewLine}{Exception}")
                           .CreateLogger();
            } catch (Exception ex) {
                // 处理初始化日志时的异常
                Console.WriteLine($"Logger initialization failed: {ex.Message}");
            }
        }

        // ///////////////////////////////////////////////////////////////////////////
        /// <summary>
        /// 获取日志记录器实例
        /// </summary>
        public static ILogger Log {
            get {
                lock (_lock) {
                    return _log;
                }
            }
        }
    }
}